# coding=utf-8
def decorator(f,*args,**kwargs):
    def _a(*args):
        def _b(*args):
            def _c(*args):
            
            
            
                print 'c'
                print args
                print kwargs
                return f(*args)
                
            print 'b'
            print args
            print kwargs
            return _c(*args)
            
        print 'a'
        print args[0]
        print args[1]
        print args[2]
        print args[3]
        print kwargs.get('a',9)
        return _b(*args)
        
    print 'This Will Be Printed Before It Really Work'
    return _a

@decorator
def f(*args,**kwargs):
    a=args[0]
    b=args[1]
    print a+b

print '---------------'
f(1,2,3,{'a':1,'b':2},{'d':4,'e':5})
print '---------------'
f(5,5)
print '---------------'







